FNP Bands
Purpose
FNP stands for Fleet National Pricing in ViSN. FNP bands are the supplier-level pricing selector used when ViSN shows FNP job descriptions and menu prices for an enquiry.
The band itself does not create the price. In the OEC path, including Ford, the band tells ViSN which provider price column or price group should be used after the FNP provider has been selected for the vehicle manufacturer. MODULUS and OEM descriptions do not use this OEC band-filtering branch.
For the complete system, start with the FNP overview. For an enquiry that has no menu prices, use Debugging Missing Pricing.
FNP band data is used by three main areas:
- supplier and DI network imports, where the supplier's FNP status and band are stored;
- FNP menu price imports, where provider prices are stored by price group and band;
- OEC enquiry job description retrieval, where stored descriptions are filtered by the enquiry's saved supplier band and fleet level.
Key Concepts
| Concept | Meaning |
|---|---|
hasFnp | Import value that controls whether the supplier is enabled for FNP. Supplier imports accept Y or N; the import manager converts this to a boolean. |
fnpBand | Supplier band value. This is stored under fnp.fnpBand on supplier network terms. |
| Fleet level | Lease/customer pricing level used to choose which group of OEC costs applies. Supported values map to Service4Fleet, Service4Fleet Platinum ARVAL, and Lex Auto. |
| FNP provider | Provider selected from the vehicle manufacturer. Current providers in the callable service are MODULUS, OEC, and OEM. |
| Price group | The set of imported prices for a provider and fleet level. For OEC this is one of service4Fleet, service4FleetPlatinumArval, or lexAutoBand. |
Allowed Supplier Band Values
Supplier and DI network imports validate fnpBand against a fixed list. The current allowed values are:
| Supplier import value | Band number used by matching | Lex Auto LA value | Notes |
|---|---|---|---|
Band 1 LA1 | 1 | 1 | Standard band 1, Lex Auto LA1 where applicable. |
Band 2 LA1 | 2 | 1 | Standard band 2, Lex Auto LA1 where applicable. |
Band 3 LA1 | 3 | 1 | Standard band 3, Lex Auto LA1 where applicable. |
Band 5 (M25) LA1 | 5 | 1 | M25 band. The 25 text is ignored during numeric parsing. |
Band 1 LA2 | 1 | 2 | Standard band 1, Lex Auto LA2 where applicable. |
Band 2 LA2 | 2 | 2 | Standard band 2, Lex Auto LA2 where applicable. |
Band 3 LA2 | 3 | 2 | Standard band 3, Lex Auto LA2 where applicable. |
Band 5 (M25) LA2 | 5 | 2 | M25 band, Lex Auto LA2 where applicable. |
Band 1 LA3 | 1 | 3 | Standard band 1, Lex Auto LA3 where applicable. |
Band 2 LA3 | 2 | 3 | Standard band 2, Lex Auto LA3 where applicable. |
Band 3 LA3 | 3 | 3 | Standard band 3, Lex Auto LA3 where applicable. |
Band 5 (M25) LA3 | 5 | 3 | M25 band, Lex Auto LA3 where applicable. |
Ford Region 22 | 22 | n/a | Ford-specific regional band. |
Ford Region 23 | 23 | n/a | Ford-specific regional band. |
NONE | n/a | n/a | Returns no descriptions in the OEC band-filtering path; does not disable MODULUS or OEM retrieval by itself. |
The supplier import validation treats the field as required, with a maximum length of 20 characters.
Where Bands Are Stored
When a supplier import or DI network import is processed, ViSN maps the two FNP columns into the service unit network terms:
{
"fnp": {
"isEnabled": true,
"fnpBand": "Band 1 LA1"
}
}
For lease-specific supplier terms, this lives on the lease company supplier service unit record.
For DI network rate cards, this lives on the service unit's diNetworkTerms.
When an enquiry is created, the relevant supplier terms are copied onto the enquiry. The source depends on the rate card type:
- DI network rate card enquiries use the service unit's
diNetworkTerms.fnp. - Lease/customer network enquiries use the lease company supplier service unit's
fnpobject.
Supplier Import Behavior
The supplier import stores two separate pieces of FNP data:
| Import column | Stored field | Behavior |
|---|---|---|
has FNP | fnp.isEnabled | Y becomes true; N, blank, or any unsupported boolean text becomes false. |
FNP Band | fnp.fnpBand | Must be one of the allowed values listed above. |
Important behaviors:
FNP Bandis required even whenhas FNPisN. UseNONEwhen the supplier should not be matched to a band.- Updating an existing supplier can turn FNP off by importing
has FNPasN. - The supplier must still have a matching franchise/manufacturer before FNP descriptions are saved for an enquiry.
has FNPcontrols whether FNP is available for the supplier;FNP Bandcontrols which OEC/Ford price subset is selected once FNP is available.
Provider Selection
ViSN chooses the FNP provider from the vehicle manufacturer. The callable service recognizes these providers:
| Provider | Typical manufacturers in the current checks | Band relevance |
|---|---|---|
OEC | Vauxhall and Ford are explicitly accepted by the FNP supplier/franchise check. | The supplier band is used to filter imported OEC/Ford costs. |
MODULUS | Peugeot and Citroen are explicitly accepted by the FNP supplier/franchise check. | Supplier band is not used by the current getFnpDescriptions filtering path. |
OEM | Kia and VWG group manufacturers are explicitly accepted by the FNP supplier/franchise check. | Supplier band is not used by the current getFnpDescriptions filtering path. |
The provider must be available for the manufacturer, the supplier must have FNP enabled, and the supplier franchise must match the vehicle manufacturer. The current description-generation helper explicitly bypasses its customer integration-enabled check for OEC Vauxhall/Ford, MODULUS Peugeot/Citroen, and OEM Kia/VWG. Other processes can still require the integration. See Configuration before using a customer integration switch to diagnose or control pricing.
OEC Band Price Groups
OEC menu prices are imported into Cloud SQL with price columns for multiple fleet levels and bands. ViSN reshapes those price columns into these cost groups:
| Fleet level | Internal group | Matching rule |
|---|---|---|
| Service4Fleet | service4Fleet | Match the numeric band only. |
| Service4Fleet Platinum ARVAL | service4FleetPlatinumArval | Match the numeric band only. |
| Lex Auto | lexAutoBand | Match numeric band and LA value. The predicate supports matching Ford regions 22 and 23 on band only; see the Ford shaping issue below. |
For a supplier band like Band 2 LA3, ViSN extracts the numbers from the string, ignores 25 if present in the M25 label, and uses the resulting values as:
band = 2
lexBand = 3
For Band 5 (M25) LA2, the parsed values become:
band = 5
lexBand = 2
For Ford Region 22, the parsed band is:
band = 22
Service4Fleet LA Handling
The OEC import file contains Service4Fleet and Service4Fleet Platinum columns with LA1, LA2, and LA3 names in validation. During the current import transformation, ViSN normalizes these groups to the LA1 column for each band:
| Stored OEC field | Source import value |
|---|---|
service4FleetBand1 | Service4Fleet_Band 1 LA1 |
service4FleetBand2 | Service4Fleet_Band 2 LA1 |
service4FleetBand3 | Service4Fleet_Band 3 LA1 |
service4FleetBand5M25 | Service4Fleet_Band 5 (M25) LA1 |
service4FleetPlatinumArvalBand1 | Service4FleetPlatinum(ARVAL)_Band 1 LA1 |
service4FleetPlatinumArvalBand2 | Service4FleetPlatinum(ARVAL)_Band 2 LA1 |
service4FleetPlatinumArvalBand3 | Service4FleetPlatinum(ARVAL)_Band 3 LA1 |
service4FleetPlatinumArvalBand5M25 | Service4FleetPlatinum(ARVAL)_Band 5 (M25) LA1 |
That means the LA suffix in the supplier band only affects Lex Auto matching. For Service4Fleet and Service4Fleet Platinum ARVAL, Band 2 LA1, Band 2 LA2, and Band 2 LA3 all match band 2.
Lex Auto LA Handling
Lex Auto prices remain separated by LA value:
| Supplier band | OEC price field selected for Lex Auto |
|---|---|
Band 1 LA1 | lexBand1La1 |
Band 1 LA2 | lexBand1La2 |
Band 1 LA3 | lexBand1La3 |
Band 2 LA1 | lexBand2La1 |
Band 2 LA2 | lexBand2La2 |
Band 2 LA3 | lexBand2La3 |
Band 3 LA1 | lexBand3La1 |
Band 3 LA2 | lexBand3La2 |
Band 3 LA3 | lexBand3La3 |
Band 5 (M25) LA1 | lexBand5M25La1 |
Band 5 (M25) LA2 | lexBand5M25La2 |
Band 5 (M25) LA3 | lexBand5M25La3 |
For Ford region bands, the Lex Auto matching predicate treats regions 22 and 23 as special cases and matches on the region band only.
Ford Lex Auto shaping issue
The reviewed callable source has a mismatch before this predicate runs: getStructuredDescriptionsForFord asks pickBandCostsFromRecord for groupKey: 'lexAutoBand', but the band constants use group: 'lexAuto'. As a result, this shaping path produces an empty costs.lexAutoBand even when the SQL response contains Ford prices. A correct Ford Region 22 or Ford Region 23 supplier band cannot recover prices that were omitted at this earlier stage.
This is an implementation issue in the reviewed revision, not evidence that Ford/Lex Auto pricing was never imported. Check the deployed version and stored description shape before escalating it as a missing import. Sources: Ford cost shaping and band constants.
Enquiry Lifecycle
The high-level flow is:
NONE is a special value in the retrieval path. If fnpBand is NONE, OEC filtering returns no descriptions.
Older enquiries may contain a numeric fnpBand. The current OEC description retrieval converts numeric bands to an empty string, which produces no band-matched descriptions. This behavior and the NONE rule apply to the OEC filtering branch; neither is a global FNP off switch for MODULUS or OEM.
Data Checks
Use these checks when an expected FNP price or description is missing:
- Check the supplier/network terms have
fnp.isEnabledset totrue. - For OEC, check the enquiry's
fnp.fnpBandis a supported string other thanNONE, not an old numeric value. Compare it with the current network terms because changing those terms does not automatically update the enquiry snapshot. - Check the supplier has a franchise matching the vehicle manufacturer.
- Check the vehicle manufacturer maps to an FNP provider.
- For OEC, check that the enquiry's saved fleet level maps to the expected internal cost group.
- For Lex Auto, check both the band number and LA suffix match a populated OEC price column. For Ford region bands, inspect the shaping issue above and the resulting
costs.lexAutoBandarray. - For Service4Fleet and Service4Fleet Platinum ARVAL, check the LA1 source column because ViSN currently stores those groups from LA1 values.
- Check the FNP provider descriptions were saved under the enquiry's ancillary provider descriptions.